I. Field of the Invention
The present invention relates to data communications. More particularly, the present invention relates to a method and apparatus for puncturing code symbols to provide improved performance in a communications system.
II. Description of the Related Art
In a typical digital communications system, data is processed, modulated, and conditioned at a transmitter unit to generate a modulated signal that is then transmitted to one or more receiver units. The data processing may include, for example, formatting the data into a particular frame format, encoding the formatted data with a particular coding scheme to provide error detection and/or correction at the receiver unit, puncturing (i.e., deleting) some of the code symbols to fit within a particular frame size, channelizing (i.e., covering) the encoded data, and spreading the channelized data over the system bandwidth. The data processing is typically defined by the system or standard being implemented.
At the receiver unit, the transmitted signal is received, conditioned, demodulated, and digitally processed to recover the transmitted data. The processing at the receiver unit is complementary to that performed at the transmitter unit and may include, for example, despreading the received samples, decovering the despread samples, inserting xe2x80x9cerasuresxe2x80x9d in place of punctured symbols, and decoding the symbols to recover the transmitted data.
A digital communications system typically employs a convolutional code or a Turbo code to provide error correction capability at the receiver unit. The ability to correct transmission errors enhances the reliability of a data transmission. Conventionally, convolutional and Turbo coding is performed using a particular polynomial generator matrix that generates a particular number of code symbols (e.g., 2, 3, or more code symbols) for each input data bit. For example, a rate xc2xd encoder generates two code symbols for each data bit.
A multiple access communications system typically transmits data in frames or packets of predetermined sizes to allow for efficient sharing of system resources among active users. For example, some communications systems support frame sizes that are multiple times a basic frame size (e.g., 768xc2x7K bits, where K=1, 2, . . . ). For efficiency, some communications systems also support multiple data rates. Depending on a number of factors, a variable number of data bits (i.e., X) may be provided to the encoder, which then generates a corresponding number of code symbols (e.g., 2X).
In certain instances, the number of code symbols generated is not exactly equal to the capacity of the frame Symbol repetition and puncturing are then used to fit the generated code symbols into a frame of a particular size. For example, if the number of code symbols is less than the frame capacity, some or all of the code symbols may be repeated (i.e., duplicated) a particular number of times. Conversely or additionally after the symbol repetition, if the number of code symbols is greater than the frame capacity, some of the code symbols may be deleted (i.e., punctured).
One conventional method for puncturing code symbols is to systematically puncture one symbol out of every Dth symbols until the required number of symbol punctures is achieved. The remaining symbols are then sent unmodified. In certain situations, this method can puncture symbols unevenly throughout an entire frame, which results in more symbols being punctured in one portion of the frame and less or no symbols being punctured in some other portion of the frame. When symbols are unevenly punctured, performance may be compromised.
As can be seen, techniques that can be used to puncture symbols in a manner to provide improved performance are highly desirable.
The present invention provides various techniques for puncturing symbols to achieve a more even distribution of symbol punctures throughout an entire frame, which can result in improved system performance. Generally, a number of puncture distances are computed, and the required symbol punctures are performed using the computed distances. A puncture distance can be defined as the periodicity of the symbol punctures. By properly selecting the puncture distances, and using the selected distances at the appropriate time, the desired puncture results can be achieved.
An embodiment of the invention provides a method for puncturing symbols in a communications system (e.g., a system that conforms to CDMA-2000, W-CDMA, or 1XTREME standard, which are identified below). In accordance with the method, S symbols are received for a frame having a capacity of N symbols, with S being greater than N. P symbols need to be punctured from the S received symbols such that the remaining unpunctured symbols fit into the frame. A number of puncture distances, D1 through DN, are then computed based on the S received symbols and the P symbol punctures. Next, a particular number of symbol punctures is determined for each computed puncture distance. P1 through PN symbol punctures are then performed at the puncture distances of D1 through DN, respectively. For a more even distribution of the symbol punctures, each of the distances D1 through DN can be selected to be greater than or equal to a minimum puncture distance Dmin defined as:             D      ⁢              xe2x80x83            ⁢      min        =          ⌊              S        P            ⌋        ,
where └ ┘ denotes a floor operator.
In a simple implementation, two puncture distances, D1 and D2, can be computed based on S and P as follows:                     D1        =                  ⌊                      S            P                    ⌋                    ,              xe2x80x83            ⁢      and        ⁢          xe2x80x83            D2    =          {                                    D1                                                              if                ⁢                                  xe2x80x83                                ⁢                D1                *                P                            =              S                                                                          D1              +              1                                                          otherwise              .                                          
P1 and P2 can then be computed as:
P2=Sxe2x88x92P*D1, and
P1=Pxe2x88x92P2.
The symbol puncturing can be achieved by (1) selecting either the puncture distance of D1 or D2 to be used to determine which symbol should be punctured next, (2) puncturing the next symbol based on the selected puncture distance, and (3) decrementing P1 or P2 based on the selected puncture distance. Steps (1) through (3) can be repeated until all P1 and P2 symbol punctures are achieved. The puncture distance can be selected such that the P1 symbol punctures at the distance of D1 are distributed among the P2 symbol punctures at the distance of D2. For example, if the ratio of P1 to P2 is equal to R, then the puncture distance can be selected such that, on an average, R symbol punctures are performed at the distance of D1 for each symbol puncture at the distance of D2. Alternatively, P1 symbol punctures at the distance of D1 can be performed, followed by P2 symbol punctures at the distance of D2. The method can thus be used to provide a rich set of patterns of puncture distances D1 and D2 that can provide improved performance.
The above concepts for two puncture distances can be applied to the general case in which N puncture distances are computed and used. The symbol punctures at each computed distance can be performed together or distributed with symbol punctures at other distances.
Prior to the symbol puncturing, the code symbols may have been repeated to generate the S received symbols. For example, in the CDMA-2000 system, each code symbol may be repeated M times, with M being an integer greater than or equal to one and selected such that S is greater than or equal to N. Also, the code symbols are typically generated by coding a number of data bits with a particular coding scheme (e.g., a convolutional or Turbo code).
Another embodiment of the invention provides a method for decoding symbols in a communications system. In accordance with the method, N symbols are initially received. It is then determined that P symbol punctures had been performed on S symbols to generate the N received symbols. A number of puncture distances, D1 through DN, is then computed based on S and P, and P1 through PN symbol punctures at the distances of D1 through DN, respectively, are also determined. A puncturing pattern used to puncture the S symbols to generate the N received symbols is then derived based on the P1 through PN symbol punctures at the distances of D1 through DN, respectively. P erasures are then inserted among the N received symbols based on the derived puncturing pattern to generate S recovered symbols, which are then decoded with a particular decoding scheme. Again, for a more even distribution of the erasures/symbol punctures, each of the distances D1 through DN can be selected to be greater than or equal to a minimum puncture distance Dmin defined above.
Yet another embodiment of the invention provides a transmit data processor for use in a communications system. The transmit data processor includes an encoder coupled to a symbol puncturing element. The encoder receives and codes data bits to generate code symbols. The symbol puncturing element (1) receives S symbols for a frame having a capacity of N symbols, with S being greater than N, (2) determines P symbols to be punctured from the S received symbols such that the remaining unpunctured symbols fit into the frame, (3) computes the puncture distances of D1 through DN based on S and P, (4) determines P1 through PN symbol punctures to be performed at the distances of D1 through DN, respectively, and (5) performs P1 through PN symbol punctures on the S received symbols at the puncture distances of D1 through DN, respectively. The symbol puncturing element can be designed to implement various features described above (e.g., distribute the P1 and P2 punctures over the entire frame). Again, each of the puncture distances of D1 through DN can be selected to be greater than or equal to a minimum puncture distance Dmin defined above.
The transmit data processor can further include a symbol repeating element that couples to the encoder and the symbol puncturing element. The symbol repeating element receives the code symbols from the encoder and repeats each received code symbol M times to generate the S symbols, with M being an integer greater than or equal to one.
Yet another embodiment of the invention provides a receiver unit for use in a communications system. The receiver unit includes a receiver, a demodulator, and a receive data processor coupled in cascade. The receiver receives and processes a modulated signal to provide a number of samples for each received frame. The demodulator processes the samples to provide N symbols for each received frame. The receive data processor (1) receives the N symbols, (2) determines that P symbol punctures had been performed on S symbols to generate the N received symbols, (3) computes a number of puncture distances, D1 through DN, based on S and P, (4) determines P1 through PN symbol punctures that had been performed at the distances of D1 through DN, respectively, (5) derives a puncturing pattern (e.g., based on D1 through DN, and P1 through PN) used to puncture the S symbols to generate the N received symbols, (6) inserts P erasures among the N received symbols in accordance with the derived puncturing pattern to generate S recovered symbols, and (7) decodes the S recovered symbols with a particular decoding scheme.
In one aspect of the invention, a method for puncturing symbols in a communications system is provided. The method advantageously includes receiving a number of symbols S to be fitted into a frame having a capacity of N symbols, wherein S is greater than N; determining a number of symbols P to be punctured from among the S received symbols such that remaining unpunctured symbols fit into the frame; puncturing a symbol; incrementing a modulo-S accumulator value by the number P a number of times that is equal to the number S; and puncturing another symbol each time the modulo-S accumulator value is decreased.
In another aspect of the invention, a transmit data processor for use in a communications system is provided. The transmit data processor advantageously includes an encoder operative to encode a plurality of data bits to generate a plurality of code symbols; and a symbol puncturing element operatively coupled to the encoder and operative to receive a number of symbols S to be fitted into a frame having a capacity of N symbols, wherein S is greater than N, determine a number of symbols P to be punctured from among the S received symbols such that remaining unpunctured symbols fit into the frame, puncture a symbol, increment a modulo-S accumulator value by the number P a number of times that is equal to the number S, and puncture another symbol each time the modulo-S accumulator value is decreased.
In another aspect of the invention, a transmit data processor for use in a communications system is provided. The transmit data processor advantageously includes a processor; and a storage medium coupled to the processor and containing a set of instructions executable by the processor to receive a number of symbols S to be fitted into a frame having a capacity of N symbols, wherein S is greater than N, determine a number of symbols P to be punctured from among the S received symbols such that remaining unpunctured symbols fit into the frame, puncture a symbol, increment a modulo-S accumulator value by the number P a number of times that is equal to the number S, and puncture another symbol each time the modulo-S accumulator value is decreased.
In another aspect of the invention, a method for puncturing symbols in a communications system is provided. The method advantageously includes the following steps: (a) receiving a number of symbols S to be fitted into a frame having a capacity of N symbols, wherein S is greater than N; (b) determining a number of symbols P to be punctured from among the S received symbols such that remaining unpunctured symbols fit into the frame; (c) subtracting the number S from an accumulator value if the accumulator value is greater than or equal to the number S; (d) puncturing a symbol; (e) incrementing the accumulator value by the number P; and (h) repeating steps (c)-(e) a number of times that is equal to the number S.
Other aspects and embodiments of the invention are described below.